
   class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
          this.val = val;
          this.left = left;
          this.right = right;
      }
  }

 class Solution129 {
    public int sumNumbers(TreeNode root) {
        if(root == null ) return 0  ;
        return getNumbers(0 , root) ;
    }
    // 最后返回的是所有叶子结点的最终值
    private int getNumbers(int num , TreeNode root){
         // 上一个结点 * 10 加上当前结点 ,
         int tmp =num * 10 + root.val ;
         int left = 0 , right = 0 ;

         if(root.left != null)
          left = getNumbers(tmp , root.left) ;

         if(root.right != null)
             right = getNumbers(tmp , root.right) ;
         // 如果没有左右结点了, 那么就直接返回 , 当前的值
         if(left + right == 0) return tmp ;
         // 如果有左右结点, 那么就是返回左右结点的值
        return left + right ;
    }

}